# This file is part of xtb.
#
# Copyright (C) 2019-2020 Sebastian Ehlert
#
# xtb is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# xtb is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with xtb.  If not, see <https://www.gnu.org/licenses/>.

option(
  'lapack',
  type: 'combo',
  value: 'auto',
  yield: true,
  choices: ['auto', 'mkl', 'mkl-rt', 'openblas', 'netlib', 'custom'],
  description: 'Linear algebra backend for program.',
)

option(
  'custom_libraries',
  type: 'array',
  value: [],
  yield: true,
  description: 'libraries to load for custom linear algebra backend',
)

option(
  'tblite',
  type: 'feature',
  value: 'auto',
  yield: true,
  description: 'use tblite library as backend for xTB',
)

option(
  'cpcmx',
  type: 'feature',
  value: 'auto',
  yield: true,
  description: 'include CPCM-X library for solvation evaluation',
)

option(
  'dftd4',
  type: 'feature',
  value: 'auto',
  yield: true,
  description: 'include DFTD4 library for D4 dispersion',
)

option(
  'multicharge',
  type: 'feature',
  value: 'auto',
  yield: true,
  description: 'include multicharge library for atomic partial charges',
)

option(
  'openmp',
  type: 'boolean',
  value: true,
  yield: true,
  description: 'use OpenMP parallelisation',
)
option(
  'install_modules',
  type: 'boolean',
  value: false,
  description: 'Install Fortran module files to include directory.',
)
option(
  'build_name',
  type: 'string',
  value: 'unknown',
  description: 'Name of the build, will be overwritten automatically by git',
)

# GPU specific options
option('gpu', type: 'boolean', value: false,
       description: 'use GPU acceleration')
option('gpu_arch', type: 'string', value: '70',
       description: 'GPU architecture version string')
option('cusolver', type: 'boolean', value: false,
       description: 'Use cuSOLVER for eigensolver routines')
option('nvtx', type: 'boolean', value: false,
       description: 'use NVTX markers')
